home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.1 (Developer) [x86] / NeXT Step 3.1 Intel dev.cdr.dmg / NextDeveloper / Headers / mach / m68k / syscall_sw.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-30  |  1.8 KB  |  88 lines

  1. /* 
  2.  * Copyright (c) 1988 NeXT, Inc.
  3.  */
  4. /*
  5.  * HISTORY
  6.  *  1-Mar-90  Gregg Kellogg (gk) at NeXT
  7.  *    kern/syscall_sw.h defines traps with negative arguments,
  8.  *    changed kernel_trap() macro to turn that back into a positive
  9.  *    argument.
  10.  */
  11.  
  12. #ifndef    _MACH_M68K_SYSCALL_SW_
  13. #define    _MACH_M68K_SYSCALL_SW_    1
  14.  
  15. #define kernel_trap_args_0    ;
  16.  
  17. #define kernel_trap_args_1            \
  18.     movl    a0@(4),d1;
  19.  
  20. #define kernel_trap_args_2            \
  21.     kernel_trap_args_1;            \
  22.     movl    a0@(8),d2;
  23.  
  24. #define kernel_trap_args_3            \
  25.     kernel_trap_args_2;            \
  26.     movl    a0@(12),d3;
  27.  
  28. #define kernel_trap_args_4            \
  29.     kernel_trap_args_3;            \
  30.     movl    a0@(16),d4;
  31.  
  32. #define kernel_trap_args_5            \
  33.     kernel_trap_args_4;            \
  34.     movl    a0@(20),d5;
  35.  
  36. #define kernel_trap_args_6            \
  37.     kernel_trap_args_5;            \
  38.     movl    a0@(24),d6;
  39.  
  40.  
  41. #define kernel_trap_args_7            \
  42.     kernel_trap_args_6;            \
  43.     movl    a0@(24),d7;
  44.  
  45. #define save_registers_0    ;
  46. #define save_registers_1    ;
  47. #define save_registers_2            \
  48.     movl    d2,sp@-
  49. #define save_registers_3            \
  50.     moveml    \#0x3000,sp@-
  51. #define save_registers_4            \
  52.     moveml    \#0x3800,sp@-
  53. #define save_registers_5            \
  54.     moveml    \#0x3c00,sp@-
  55. #define save_registers_6            \
  56.     moveml    \#0x3e00,sp@-
  57. #define save_registers_7            \
  58.     moveml    \#0x3f00,sp@-
  59.  
  60. #define restore_registers_0    ;
  61. #define restore_registers_1    ;
  62. #define restore_registers_2            \
  63.     movl    sp@+,d2
  64. #define restore_registers_3            \
  65.     moveml    sp@+,\#0xc
  66. #define restore_registers_4            \
  67.     moveml    sp@+,\#0x1c
  68. #define restore_registers_5            \
  69.     moveml    sp@+,\#0x3c
  70. #define restore_registers_6            \
  71.     moveml    sp@+,\#0x7c
  72. #define restore_registers_7            \
  73.     moveml    sp@+,\#0xfc
  74.  
  75. #define kernel_trap(name, number, args)        \
  76.     .globl    _##name;            \
  77. _##name:                    \
  78.     movl    sp,a0;                \
  79.     save_registers_##args;            \
  80.     kernel_trap_args_##args;        \
  81.     movl    \#-number,d0;            \
  82.     trap    \#3;                \
  83.     restore_registers_##args;        \
  84.     rts
  85.  
  86. #endif    _MACH_M68K_SYSCALL_SW_
  87.  
  88.